package leetcode每日一题;


import com.sun.javafx.collections.MappingChange;

import java.util.Map;
import java.util.HashMap;

/**
 * 1. 问题描述
 *
 * 2. 算法分析
 *
 * 3. 代码实现
 */
@SuppressWarnings("all")
public class 单词规律 {
    public static void main(String[] args) {

    }

    /**
     * 单hash实现
     * @param pattern
     * @param s
     * @return
     */
    public static boolean wordPattern(String pattern, String s) {
        String[] split = s.split(" "); // 将字符串s按照空格切割
        if(pattern.length() != split.length) {return false;}
        Map<Character,String> map = new HashMap<>(); //key: pattern中的字符  value: split中对应的字符串
        for(int i = 0; i < pattern.length(); i++) {
            if(!map.containsKey(pattern.charAt(i))) {
                // 当前字符不在map中
                // 此时我们需要判断split数组中的第i个字符串是否出现在map的某个key对应的value
                // 扫描当前map
                for(Character key : map.keySet()) {
                    if(map.get(key).equals(split[i])) {
                        return false;
                    }
                }
                map.put(pattern.charAt(i),split[i]);
            } else {
                // 当前字符在map中
                // 判断当前字符在map中的value是否等于split中对应索引的字符串
                if(!map.get(pattern.charAt(i)).equals(split[i])) {
                    return false;
                }
            }
        }
        return true;
    }

    /**
     * 双hash实现
     * @param pattern
     * @param s
     * @return
     */
    public static boolean wordPattern2(String pattern, String s) {
        if (pattern.length() != s.length()) {return false;}
        String[] split = s.split(" "); // 将字符串s按照空格切割
        HashMap<Character,String> map1 = new HashMap<>(); // pattern中的字符为key，split中的字符串为value
        HashMap<String,Character> map2 = new HashMap<>(); // 相反
        for (int i = 0; i < pattern.length(); i++) {
            if (map1.containsKey(pattern.charAt(i))) {

            }
        }
        return true;
    }


}
